package com.example.administrator.mybottomnavigationbar;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.ashokvarma.bottomnavigation.BottomNavigationBar;
import com.ashokvarma.bottomnavigation.BottomNavigationItem;
import com.ashokvarma.bottomnavigation.ShapeBadgeItem;
import com.ashokvarma.bottomnavigation.TextBadgeItem;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private BottomNavigationBar mBottomNavigationBar;
    private ViewPager viewPager;
    private List<Fragment> fragments2 = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
/*
* 7.自动隐藏/手动隐藏

自动隐藏：

如果容器在Co-ordinator Layout布局内，默认情况下，向下滚动会隐藏，向上滚动会展示；通过调用方法setAutoHideEnabled(false)可以关闭该特性

手动隐藏：

调用方法

bottomNavigationBar.hide();//隐藏
bottomNavigationBar.show();//显示

展示和隐藏时动画模式

默认都是动画模式，参数传false可以关闭动画

bottomNavigationBar.hide(false);//关闭动画效果
bottomNavigationBar.show(false);//关闭动画效果

isHidden() 返回是否隐藏
* */
        initBottomNavigationBar();

        initViewPager();
    }

    private void initBottomNavigationBar() {
        mBottomNavigationBar = (BottomNavigationBar) findViewById(R.id.bottom_navigation_bar);
        String[] mTitles = new String[]{"首页", "发现", "信息", "我的"};
        mBottomNavigationBar
                .setActiveColor(R.color.black)
                .setInActiveColor(R.color.gray)
                .setBarBackgroundColor(R.color.white);
/*mode_default:如果选项大于3个，使用mode_shifting，否则使用mode_fixed

mode_fixed:每个item对应名称，不选中也会显示

mode_shifting:每个item对应名称，只有选中才会显示，不选中隐藏*/
        mBottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED);
        /*
        2. 背景样式Background Styles

属性：app:bnbBackgroundStyle
值：background_style_default, background_style_static, background_style_ripple
方法：setBackgroundStyle()
参数：BACKGROUND_STYLE_DEFAULT, BACKGROUND_STYLE_STATIC, BACKGROUND_STYLE_RIPPLE

3种style

background_style_default:如果mode设为MODE_FIXED，默认使用BACKGROUND_STYLE_STATIC；
如果mode设为MODE_SHIFTING，默认使用 BACKGROUND_STYLE_RIPPLE

background_style_static:点击的时候没有水波纹效果

background_style_ripple:点击的时候有水波纹效果*/
        mBottomNavigationBar
                .setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC);

//setBadgeItem(badgeItem)
        TextBadgeItem numberBadgeItem = new TextBadgeItem();
        ShapeBadgeItem shapeBadgeItem = new ShapeBadgeItem();
//        numberBadgeItem.setText("")// 更新数据

        mBottomNavigationBar
                .addItem(new BottomNavigationItem(R.mipmap.icon_maintab_home_press, mTitles[0])
                        .setInactiveIcon(ContextCompat.getDrawable(this, R.mipmap.icon_maintab_home_normal))
//                        .setActiveColorResource(R.color.colorAccent)
                        .setBadgeItem(numberBadgeItem) // 设置文字角标
//                        .setBadgeItem(shapeBadgeItem) // 设置图形角标
                )
                .addItem(new BottomNavigationItem(R.mipmap.icon_maintab_zichan_press, mTitles[1])
                        .setInactiveIcon(ContextCompat.getDrawable(this, R.mipmap.icon_maintab_zichan_normal)))
                .addItem(new BottomNavigationItem(R.mipmap.icon_maintab_person_press, mTitles[2])
                        .setInactiveIcon(ContextCompat.getDrawable(this, R.mipmap.icon_maintab_person_normal)))
                .addItem(new BottomNavigationItem(R.mipmap.ic_launcher_round, mTitles[3])
                        .setInactiveIcon(ContextCompat.getDrawable(this, R.mipmap.ic_launcher)))
                .setFirstSelectedPosition(0)
                .initialise();//所有的设置需在调用该方法前完成```
        numberBadgeItem.setText("1");// 更新数据
        mBottomNavigationBar.setTabSelectedListener(new BottomNavigationBar.OnTabSelectedListener() {//这里也可以使用SimpleOnTabSelectedListener
            @Override
            public void onTabSelected(int position) {//未选中 -> 选中
                viewPager.setCurrentItem(position);
            }

            @Override
            public void onTabUnselected(int position) {//选中 -> 未选中  //上一次选中的item


            }

            @Override
            public void onTabReselected(int position) {//选中 -> 选中 //重复选择的item

            }
        });
    }

    private void initViewPager() {
        viewPager = (ViewPager) findViewById(R.id.view_pager);

        viewPager.setAdapter(new SectionsPagerAdapter(getSupportFragmentManager(), fragments2));
        viewPager.setCurrentItem(0);

        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                mBottomNavigationBar.selectTab(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }
    public class SectionsPagerAdapter extends FragmentPagerAdapter {
        List<Fragment> fragments;

        public SectionsPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
            super(fm);
            this.fragments = fragments;
        }

        @Override
        public Fragment getItem(int position) {
            return fragments.get(position);
        }

        @Override
        public int getCount() {
            return fragments.size();
        }
    }
}
